package paidaxing.blog.user.config;

import cn.dev33.satoken.stp.StpInterface;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import paidaxing.blog.user.entity.User;
import paidaxing.blog.user.mapper.UserMapper;

import java.util.ArrayList;
import java.util.List;


/**
 * 自定义权限验证接口扩展
 * Sa-Token 将从此实现类获取每个账号拥有的权限码和角色
 * @author heefM
 * @date 2025-10-20
 */
@Slf4j
@Component
public class StpInterfaceImpl implements StpInterface {
    
    @Autowired
    private UserMapper userMapper;

    /**
     * 返回一个用户所拥有的权限码集合
     * 暂时未实现权限码控制，后续可根据需要扩展
     */
    @Override
    public List<String> getPermissionList(Object loginId, String loginType) {
        // 暂时返回空列表，后续可扩展实现权限码控制
        return new ArrayList<>();
    }

    /**
     * 返回一个用户所拥有的角色标识集合
     */
    @Override
    public List<String> getRoleList(Object loginId, String loginType) {
        List<String> roleList = new ArrayList<>();
        
        try {
            // 从数据库查询用户信息
            User user = userMapper.selectById(Long.valueOf(loginId.toString()));
            if (user != null && user.getRole() != null) {
                roleList.add(user.getRole());
            }
        } catch (Exception e) {
            log.error("获取用户角色信息失败，loginId: {}", loginId, e);
        }
        
        return roleList;
    }
}